# This tests writing and reading settings from LLDB.

# Check that the settings can be written to file and read again without
# altering the values.
# RUN: %lldb -b -o 'settings write -f %t.foo' -o 'settings read -f %t.foo' -o 'settings write -f %t.bar' -o 'settings read -f %t.bar' 2>&1 | FileCheck %s --check-prefix SUCCESS
# RUN: diff -w %t.foo %t.bar
# SUCCESS-NOT: error:

# Check that exporting target settings only export target settings and nothing else.
# RUN: %lldb -b -o 'settings write -f %t.target target' 2>&1 | FileCheck %s --check-prefix SUCCESS
# RUN: cat %t.target | FileCheck %s --check-prefix TARGET
# TARGET: settings set -f target
# TARGET-NOT: settings set -f platform
# TARGET-NOT: settings set -f symbols
# TARGET-NOT: settings set -f interpreter
# TARGET-NOT: settings set -f plugin

# Check that settings appear twice when appending.
# RUN: %lldb -b -o 'settings write -a -f %t.append target' -o 'settings write -a -f %t.append target' 2>&1 | FileCheck %s --check-prefix SUCCESS
# RUN: cat %t.append | FileCheck %s --check-prefix APPEND
# APPEND: settings set -f target.language
# APPEND: settings set -f target.language

# Check that an error is printed for non-existing setting.
# RUN: echo "settings set -f bogus" > %t.bogus_setting
# RUN: %lldb -b -o 'settings read -f %t.bogus_setting' 2>&1 | FileCheck %s --check-prefix BOGUS-SETTING
# BOGUS-SETTING: error: invalid value path

# Check that an error is printed for invalid value.
# RUN: echo "settings set -f target.language bogus" > %t.bogus_value
# RUN: %lldb -b -o 'settings read -f %t.bogus_value' 2>&1 | FileCheck %s --check-prefix BOGUS-VALUE
# BOGUS-VALUE: error: invalid language type
